#include "vtor_menu.h"

#ifdef __DEMO_PROJECT__
// 添加需要的头文件
#include "xxx.h"


// 添加需要的外部变量或成员


// 内部变量和成员
VtorMenu VtorMenu_demoArray[] = {
	{"VtorMenu", 0},
	{"menu1", 1},
		{"menu11", 12},
	{"menu2", 2},
		{"menu21", 21},
		{"menu22", 22},
	{"about", 20240513},

};

VtorMenu* rootVtorMenu			= NULL;
VtorMenu* menu1			= NULL;
VtorMenu* menu11			= NULL;
VtorMenu* menu2			= NULL;
VtorMenu* menu21			= NULL;
VtorMenu* menu22			= NULL;
VtorMenu* aboutMenu			= NULL;

// 根据显示平台实现自定义绘制函数
void VtorMenu_DisplaySubMenu(uint8_t itemIdx, VtorMenu* subMenu)
{
	uint8_t menuDisplayBuffer[50];
	sprintf(menuDisplayBuffer, " %s:%d", subMenu->name, subMenu->value);
	if (VtorMenu_curMenu->itemIdx == itemIdx)
	{
		// 如果是当前选择项 前面加上小标识，并 反色显示（这里仅用oled进行演示）
		//pOledPaint->mode = OLED_PAINT_MODE_INVERT;
		menuDisplayBuffer[0] = '>';
	}
	// 使用oled当作屏幕，目前最多能显示8个项
	//OLED_ShowString(0, itemIdx * 8, menuDisplayBuffer);
	//pOledPaint->mode = OLED_PAINT_MODE_NORMAL;
}

void VtorMenu_ClickHandler(VtorMenu* menu)
{
	if (menu1 == menu)
	{
		//Led1_Toogle();
	}
}

// 菜单预处理，用于操作之前，主要是为了给菜单项进行赋值，方便后面显示（可为空）
void VtorMenu_PreProcess()
{
	//rootVtorMenu->value = HAL_GetTick(); // HAL库获取运行时间（毫秒）
}

// 菜单再处理，用于操作之后，主要是为了将菜单项值赋值给变量，便于实际操控（可为空）
void VtorMenu_ReProcess()
{

}

void VtorMenu_Init()
{
	unsigned char menuIdx = 0;
	rootVtorMenu	= &VtorMenu_demoArray[menuIdx++];
	menu1			= &VtorMenu_demoArray[menuIdx++];
	menu11			= &VtorMenu_demoArray[menuIdx++];
	menu2			= &VtorMenu_demoArray[menuIdx++];
	menu21			= &VtorMenu_demoArray[menuIdx++];
	menu22			= &VtorMenu_demoArray[menuIdx++];
	aboutMenu		= &VtorMenu_demoArray[menuIdx++];


	// 构建菜单
	VtorMenu_Relate(rootVtorMenu,rootVtorMenu);
	VtorMenu_Relate(rootVtorMenu,menu1);
		VtorMenu_Relate(menu1,menu11);
	VtorMenu_Relate(rootVtorMenu,menu2);
		VtorMenu_Relate(menu2,menu21);
		VtorMenu_Relate(menu2,menu22);
	VtorMenu_Relate(rootVtorMenu,aboutMenu);
	
	// 将当前指针指向根菜单
	VtorMenu_curMenu= rootVtorMenu;
}

#endif
